class MVVM{
    constructor(options){
        this.$el=options.el
        this.$data=options.data
        if(this.$el){
            new Observer(this.$data)
            this.proxyData(this.$data) 
            new Compile(this.$el,this) // 在模版编译之前先把数据劫持了（因为模版编译的时候会去数据上取值）
        }
    }
    proxyData(data){ // 把data上的数据代理到vm实例上
        Object.keys(data).some(key=>{
            Object.defineProperty(this,key,{
                get(){
                    return data[key]
                },
                set(newVal){
                  data[key]=newVal
                }
            })
        })
    }
}